<?php namespace Admin\Controller; 
//继承至公共控制器
class CateController extends CommonController{
	private $model;
//	这是一自定义的类似于构造函数，是框架自己定义的，继承的时候，构造函数名字一样，有冲突；父类会执行，子类也会执行
	public function __auto(){
		
		$this->model=new \Common\Model\Cate;
		
	}
//	category分类列表
	public function index(){
		
		//如果没有一个分类，那么就去添加,这个orderby是通过继承得到的
		$data=$this->model->orderBy('cid','ASC')->get();
//		p($data);exit;
		
		if(!$data){
			View::success('请先去添加分类',U('add'));
		}
		//否则，树状结构,是自带的一个函数，tree（），好像专门为无限极分类做的函数,怎么感觉这就是一种排序方式
		$data=Data::tree($data,'cname','cid','pid');
//		p($data);exit;
//		分配变量
		View::with('data',$data);
	    View::make();
		
	}
	
	//顶级分类添加
	public function add(){
		if(IS_POST){
			if($this->model->store()){
				View::success('添加成功',U('index'));
			}
			View::error($this->model->getError());
		}
	    View::make();
	}
// 子分类添加
	public function addSon(){
		//添加
		if(IS_POST){
			if($this->model->store()){
				View::success('添加成功',U('index'));
			}
			View::error($this->model->getError());
		}
		
//		1获得所属的分类
//intval — 获取变量的整数值,因为有可能地址栏中传出来的cid等于一堆字符串，所有要转成整形,防止用户胡乱输入一些垃圾信息
		$cid=Q('get.cid',0,'intval');
		
		$typeData=Db::table('shop_type')->get();
		
//		get()函数得到是二维数组，而find()函数得到一维数组的简单一些的数据
		$cate=$this->model->where("cid={$cid}")->find();
		$num=$cate['shop_type_tid'];
		if($num!=0){
			$cateTypeTname=Db::table('shop_type')->where('tid',$num)->pluck('tname');
			View::with('cateTypeTname',$cateTypeTname);
		}
		View::with('typeData',$typeData);
		//with()类似于smarty中分配变量
		View::with('cate',$cate);
		View::make();
	}
   
   //分类编辑
// public function edit(){
// 	View::make();
// }
//	分类编辑
	public function edit(){
		//二修改
		if(IS_POST){
			if($this->model->edit()){
				View::success('修改成功',U('index'));
			}
			View::error($this->model->getError());
		}
		//一获得旧的数据，处理旧的数据
//		①获得旧数据
		$cid=Q('get.cid',0,'intval');

		$oldData=$this->model->where("cid={$cid}")->find();
		View::with('oldData',$oldData);
//		②处理所属分类，除了自己和自己的子集
		$cateData=Data::tree($this->model->getNoMy($cid),'cname');

		View::with('cateData',$cateData);

		View::make();
	}
   
   //删除
   public function del(){
   	$cid=Q('get.cid',0,'intval');
//	2.子分类上移位置
//pluck()函数返回的单个值
	$pid=$this->model->where("cid={$cid}")->pluck('pid');

	//找到当前分类的所有的子集把pid改成被删除分类的pid
	$this->model->where("pid={$cid}")->update(array('pid'=>$pid));
//	3.执行删除
	$this->model->where("cid={$cid}")->delete();
	View::success('删除成功');
   }

}